查看原文
其他

秒懂商用区块链关键技术:智能合约

博文视点 博文视点Broadview 2021-07-07


智能合约是区块链能够被称为颠覆性技术的主要原因之一,没有智能合约的区块链系统无法在商用领域中灵活开展业务。本文选自《商用区块链技术与实践》带你快速了解这一项关键技术。

智能合约

让事先制定的规则被公开、公正、安全的执行,不会被恶意篡改。


智能合约的概念早在1994年便提出,但由于当时缺少可信任的执行环境和系统,智能合约并没有被应用到实际产业中。

在2009年比特币诞生之时,比特币的交易中带有简单、可执行的脚本,并可以执行简单的逻辑。人们逐渐意识到区块链的底层技术天生可以为智能合约提供可信的执行环境,但是比特币对于智能合约的支持仅仅停留在简易脚本的层面上,不具备图灵完备性,无法实现更复杂的逻辑,所以比特币的脚本只是拉开了基于智能合约的开发应用程序的序幕。

以太坊的出现,让智能合约从简单实验到落地应用,对于成熟的区块链技术体系而言,智能合约是一个非常重要的技术特性,也是区块链能够被称为颠覆性技术的主要原因之一。






什么是智能合约

智能合约已经成为区块链系统中的基本功能组件,没有智能合约的区块链系统将无法在商用领域中灵活地开展业务。

在区块链系统里,智能合约是存储在区块链上的一段代码,被写在合约的账户里,并且实现特定业务操作,可以被触发执行。智能合约的代码不能被修改,否则将会造成被滥用修改的风险。

智能合约使用交易触发执行,并且在每个全节点上都会被执行,如果单个节点作恶,那么该节点的数据失效,不会影响其他节点,这让智能合约的执行具有一致性,且无法作恶,可以利用去中心化的特性保证业务规则的正确性。

智能合约的执行条件是,当其他账户给这个合约账户转账(BU原生资产或者asset资产)的时候触发执行。智能合约的代码被加载到ChainVM中,ChainVM执行代码,最终将执行的结果写入区块链里,而这个过程将会在所有的节点中执行和存储。






合约执行过程


ChainVM基于Chrome V8引擎和WebAssembly技术实现并进行改进和优化,可以更好地满足区块链系统生态友好性的需求。

Chrome V8是由Google开发的开源JavaScript引擎,可将JavaScript代码直接翻译成二进制机器码在物理机上执行,执行效率高;WebAssembly是一种可移植、加载高效、与平台无关的字节码格式,能在平台上以接近原生的速度执行程序,是一种全新的Web标准,由Google、苹果、微软、Mozilla等几大公司同时支持和制定。

这两项技术可以为ChainVM提供良好的基础功能支撑,但是无法直接应用到区块链系统场景,主要应用在合约执行安全、接口权限、合约间交互、异常处理、语法检查等方面。为了便于描述,本节将围绕一个支持JavaScript语言的Chrome V8引擎来阐述ChainVM的实现原理。

如上图,智能合约的执行过程如下:

(1)用户A发起签名交易,目标账户为B,B为一个智能合约账户,里面存储着智能合约代码。假定此时交易被广播且被打包,节点需要将该交易存储在区块链上,需要对该交易进行回放和演算。

(2)客户端(定义其使用C++代码实现)调用Chrome V8引擎,并把合约代码加载到引擎里执行,在执行的过程中如果遇到内置的接口,就会产生回调函数,调用客户端代码,此时实现了双向交互功能。

(3)合约在执行过程中,有可能产生新的交易,如合约账户B在合约内部通过接口对账户C进行转账操作,如果账户C仅是普通账户,那么只需进行普通转账操作即可;如果账户C是一个合约账户,那么将会再次触发新的合约形成一次递归调用。合约调用合约的递归深度为3层,超过3层将会出错并回退整个交易,这是出于合约实现的复杂度和区块链底层的安全性来考虑与设计的。






智能合约安全开发指南


开发智能合约和开发普通程序有一定的区别,其部署之后无法被修改,甚至很难升级,且数据无法被篡改,因此,开发智能合约需要遵循以下几个原则:

(1)保持合约的简洁。将复杂的逻辑放在外部的应用程序中实现,合约只需要保证基本逻辑正确和重要数据安全。

(2)使用安全计算函数。在对数字的计算上,一定要使用内置接口,以免数字溢出。安全计算函数在遇到溢出问题时,将会通过函数来终止执行,并回退数据。

(3)发布之前一定要充分测试。

(4)对于不可预知的错误,要多使用断言并终止程序。

(5)避免重入攻击。当在合约里调用另外一个合约时,当前合约一定要先改变重要变量的状态,否则另外的合约再次向当前合约发起交易时,会依然使用当前的合约状态。

(6)合约转账尽量由普通用户交易触发。如果用户发起的转账请求失败,那么只会导致当前用户触发的转账无法执行,而不会影响其他人的转账请求或者其他逻辑流程。



区块链技术经过11年的发展,已经逐渐走出数字货币等传统应用范围,逐渐向数字金融、物联网、智能制造、供应链管理等商业领域扩展。

目前,区块链技术正处于大规模商业应用的前夜,我们非常有必要探讨商用区块链技术的技术进展和发展趋势。

《商用区块链技术与实践》这本书从商用区块链核心需求的角度出发,详细地介绍了区块链的产品架构和底层关键技术,并从行业痛点、解决方案、核心价值的角度分析了典型的商用案例。

本书对于了解区块链在商业应用场景中的技术定位和落地方法具有很好的参考价值!

▼ 扫码获取本书详情 ▼

现在下单每满100减50元!




如果喜欢本文欢迎 在看留言分享至朋友圈 三连

 热文推荐  





点击阅读原文,了解本书详情~

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存